home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / standards / CCITT / 1992 / X / x518_2.asc < prev    next >
Encoding:
Text File  |  1993-07-15  |  77.7 KB  |  1,279 lines

  1.          The drawings contained in this Recommendation have been done in AUTOCAD
  2.                In both cases (chaining result and referral)  an  administrative  authority
  3.          through its DSA may elect to ignore the request for returning cross references.
  4.          10.4.2 Knowledge inconsistencies
  5.                The Directory has to support consistency-checking mechanisms  to  guarantee
  6.          a certain degree of knowledge consistency.
  7.          10.4.2.1 Detection of knowledge inconsistencies
  8.                The kind of inconsistency and its detection varies for the different  types
  9.          of knowledge references.
  10.                -   Cross and subordinate references:
  11.                This type of reference is invalid if the referenced DSA  does  not  have  a
  12.          local naming context with the context prefix contained  in  the  reference.  This
  13.          inconsistency will be detected during the determination  of  the  initial  naming
  14.          context of the name resolution process by the operation  progress  and  reference
  15.          type components of the ChainingArgument.
  16.                -   Non-specific Subordinate-references:
  17.                This type of reference is invalid if the referenced DSA  does  not  have  a
  18.          local naming context whose immediately superior context prefix  is  contained  in
  19.          the reference, i.e. the reference contains that DSA's local context prefix  minus
  20.          the last RDN. The consistency check is applied as above.
  21.                -   Superior references:
  22.                An invalid superior reference  is  one  which  does  not  form  part  of  a
  23.          reference path to the root. The maintenance of superior references must  be  done
  24.          by external means and is outside the scope of this Recommendation.
  25.                Note - It is not always possible to detect an invalid superior reference.
  26.          10.4.2.2 Reporting of knowledge inconsistencies
  27.                If chaining is used  in  performing  a  Directory  request,  all  knowledge
  28.          inconsistencies will be detected by the DSA which  holds  the  invalid  knowledge
  29.          reference, through receiving a ServiceError with problem of invalidReference.
  30.                If a DSA returns  a  referral  which  is  based  on  an  invalid  knowledge
  31.          reference, the  requestor  will  be  returned  a  ServiceError  with  problem  of
  32.          invalidReference if it uses  the  referral.  How  the  error  condition  will  be
  33.          propagated to the DSA which stores the invalid reference is not within the  scope
  34.          of this Recommendation.
  35.          10.4.2.3 Treatment of inconsistent knowledge references
  36.                After a DSA h s  detected  an  invalid  reference  it  should  try  to  re-
  37.          establish knowledge consistency. For example, this can be done by simply deleting
  38.          an invalid cross reference or by replacing it with a correct  one  which  can  be
  39.          obtained using the requestCrossReferences mechanisms.
  40.                The way in which a DSA actually  handles  invalid  references  is  a  local
  41.          matter, and outside the scope of this Recommendation.
  42.          SECTION 4 - DSA abstract service
  43.          11     Overview of DSA abstract service
  44.          11.1   The abstract service of the directory is fully described in Recommendation
  45.          X.511. When such a service is provided in a distributed environment, as  modelled
  46.          in  7 of this Recommendation, it can be regarded as being provided by means of  a
  47.          set of DSAs. This is illustrated in Figure 1/X.518.
  48.          11.2   To describe this model, the refinement of the directory  object  into  its
  49.          component dsa objects can be expressed as:
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  71.  
  72.                   DirectoryRefinement  ::=  REFINE directory AS
  73.                      dsa         RECURRING
  74.                          readPort                  [S]  VISIBLE
  75.                          searchPort          [S]  VISIBLE
  76.                          modifyPort          [S]  VISIBLE
  77.                          chainedReadPort           PAIRED with dsa
  78.                          chainedSearchPort   PAIRED with dsa
  79.                          chainedModifyPort   PAIRED with dsa
  80.          11.3   The dsa object itself can be defined as follows:
  81.                dsa OBJECT 
  82.                      PORTS { readPort       [S],
  83.                                searchPort          [S],
  84.                                modifyPort          [S],
  85.                                chainedReadPort,
  86.                                chainedSearchPort,
  87.                                chainedModifyPort}
  88.                ::=  id-ot-dsa
  89.                The DSA supplies Read, Search and Modify ports, thus making  visible  those
  90.          services to the users of the directory object, namely the DUAs.  In  addition,  a
  91.          DSA supports "chained" versions of these  ports,  namely  Chained  Read,  Chained
  92.          Search, and Chained Modify, which allow DSAs  to  propagate  requests  for  those
  93.          services to other DSAs.
  94.          11.4   The ports cited from  11.2 and 11.3 (excluding those which are defined  in
  95.          Recommen- dation X.511) are defined as follows:
  96.                chainedReadPort   PORT
  97.                      ABSTRACT OPERATIONS {
  98.                            ChainedRead, ChainedCompare,
  99.                            ChainedAbandon}
  100.                      ::=   id-pt-chained-read
  101.                chainedSearchPort PORT
  102.                      ABSTRACT OPERATIONS {
  103.                            ChainedList, ChainedSearch}
  104.                      ::=        id-pt-chained-search
  105.                chainedModifyPort PORT
  106.                      ABSTRACT OPERATIONS {
  107.                            ChainedAddEntry,
  108.                            ChainedRemoveEntry,
  109.                            ChainedModifyEntry,
  110.                            ChainedModifyRDN}
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.          PAGE18  Fascicle VIII.8 - Rec. X.518
  142.  
  143.                      ::= id-pt-chained-modify
  144.          12     Information types
  145.          12.1   Introduction
  146.          12.1.1 This paragraph  identifies,  and  in  some  cases  defines,  a  number  of
  147.          information types which are subsequently used in the definition of various of the
  148.          operations of the DSA abstract service.   The  information  types  concerned  are
  149.          those which are common to more than one  operation,  are  likely  to  be  in  the
  150.          future, or which are sufficiently complex or self-contained  as  to  merit  being
  151.          defined separately from the operation which uses them.
  152.          12.1.2 Several of the information  types  used  in  the  definition  of  the  DSA
  153.          abstract service are actually defined elsewhere.  12.2 identifies these types and
  154.          indicates the source of their definition. Each of the remaining ( 12.3  to  12.9)
  155.          identifies and defines an information type.
  156.          12.2   Information types defined elsewhere
  157.          12.2.1 The following information types are defined in Recommendation X.501:
  158.                a)  aliasedObjectName;
  159.                b)  DistinguishedName;
  160.                c)  Name;
  161.                d)  RelativeDistinguishedName.
  162.          12.2.2 The following information types are defined in Recommendation X.511:
  163.                (Abstract-bind)
  164.                a)  DirectoryBind;
  165.                (Abstract-operations)
  166.                b)  Abandon;
  167.                (Abstract-errors)
  168.                c)  Abandoned;
  169.                d)  AttributeError;
  170.                e)  NameError;
  171.                f)  SecurityError;
  172.                g)  ServiceError;
  173.                h)  UpdateError;
  174.                (Macro)
  175.                i)  OPTIONALLY-SIGNED;
  176.                (Data Type)
  177.                j)  SecurityParameters.
  178.          12.2.3 The following information type is defined in Recommendation X.520:
  179.                a)  PresentationAddress.
  180.          12.3   Chaining arguments
  181.          12.3.1 The ChainingArguments are present in each Chained  abstract-operation,  to
  182.          convey to a DSA the information needed to successfully perform its  part  of  the
  183.          overall task:
  184.                ChainingArguments ::=   SET {
  185.                      originator       [0]   DistinguishedName OPTIONAL,
  186.                      targetObject           [1]   DistinguishedName OPTIONAL,
  187.                      operationProgress      [2]   OperationProgress DEFAULT {notStarted},
  188.                      traceInformation [3]   TraceInformation, 
  189.                      aliasDereferenced      [4]   BOOLEAN DEFAULT FALSE,
  190.                      aliasedRDNs            [5]   INTEGER OPTIONAL,
  191.                            -- absent unless aliasDereferenced is TRUE
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  213.  
  214.                      returnCrossRefs  [6]   BOOLEAN DEFAULT FALSE,
  215.                      referenceType          [7]   ReferenceType DEFAULT superior,
  216.                      Info                   [8]   DomainInfo OPTIONAL,
  217.                      timeLimit        [9]   UTCTime OPTIONAL,
  218.                                        [10]  SecurityParameters DEFAULT {}}
  219.          12.3.2 The omponents have the meanings as defined in  12.3.2.1 to 12.3.2.11.
  220.          12.3.2.1  The originator component conveys the name of the (ultimate)  originator
  221.          of the request, unless already specified in the security parameters. If requestor
  222.          is present in CommonArguments, this argument may be omitted.
  223.          12.3.2.2  The targetObject  component  conveys  the  name  of  the  object  whose
  224.          directory entry is being routed to. The  role  of  this  object  depends  on  the
  225.          particular abstract-operation concerned: it may be the object whose entry  is  to
  226.          be operated on, or which is to be the base object for a request or  sub-  request
  227.          involving multiple objects (e.g. ChainedList or  ChainedSearch).  This  component
  228.          may be omitted only if it would have had  the  same  value  as  the  base  object
  229.          parameter in XArgument (see  14.3.1), in which case its  implied  value  is  that
  230.          value.
  231.          12.3.2.3  The operationProgress component is  used  to  inform  the  DSA  of  the
  232.          progress of the operation, and hence of the role which it is expected to play  in
  233.          its overall performance. The information conveyed in this component is  specified
  234.          in  12.5.
  235.          12.3.2.4  The traceInformation component is used to prevent  looping  among  DSAs
  236.          when chaining is in operation. A DSA adds a  new  element  to  trace  information
  237.          prior to chaining an operation to another DSA. On being requested to  perform  an
  238.          operation, a DSA checks, by  examination  of  the  trace  information,  that  the
  239.          operation has not formed a loop. The information conveyed in  this  component  is
  240.          specified in  12.6.
  241.          12.3.2.5  The aliasDereferenced component is a Boolean value  which  is  used  to
  242.          indicate whether or not one or more alias entries have so  far  been  encountered
  243.          and dereferenced during the course of distributed name  resolution.  The  default
  244.          value of FALSE indicates that no alias entry has been dereferenced.
  245.          12.3.2.6  The aliasedRDNs component  indicates  how  many  of  the  RDNs  in  the
  246.          targetObject Name have been generated from the  aliasedObjectName  attributes  of
  247.          one (or more) alias entries. The integer value is set whenever an alias entry  is
  248.          encountered and dereferenced. This component shall be present if and only if  the
  249.          aliasDereferenced component is TRUE.
  250.          12.3.2.7  The returnCrossRefs  component  is  a  Boolean  value  which  indicates
  251.          whether or not knowledge references, used  during  the  course  of  performing  a
  252.          distributed operation, are requested to be passed back to  the  initial  DSA,  as
  253.          cross references, along with a result or referral. The  default  value  of  FALSE
  254.          indicates that such knowledge references are not to be returned.
  255.          12.3.2.8  The referenceType component  indicates,  to  the  DSA  being  asked  to
  256.          perform the abstract- operation, what type of knowledge was  used  to  route  the
  257.          request to it. The DSA may therefore be able to detect errors  in  the  knowledge
  258.          held by the invoker. If such an error is detected it  shall  be  indicated  by  a
  259.          ServiceError with the invalidReference problem. ReferenceType is described  fully
  260.          in  12.7.
  261.                Note - If the referenceType is missing, then the value  superior  shall  be
  262.          assumed.
  263.          12.3.2.9  The info component is used to  convey  DMD-specific  information  among
  264.          DSAs which are involved in the processing of a common request. This component  is
  265.          of type DomainInfo, which is of unrestricted type:
  266.                DomainInfo        ::=  ANY
  267.          12.3.2.10 The timeLimit component, if present, indicates the time  by  which  the
  268.          operation is to be completed.
  269.          12.3.2.11 The SecurityParameters component is specified in Recommendation  X.511.
  270.          Its absence is deemed  equivalent  to  there  being  an  empty  set  of  security
  271.          parameters.
  272.          12.4   Chaining results
  273.          12.4.1 The ChainingResults are present in the result of  each  abstract-operation
  274.          and provide feedback to the DSA which invoked the abstract-operation.
  275.                   ChainingResults      ::=   SET {
  276.                      Info                   [0]   DomainInfo  OPTIONAL,
  277.                      crossReferences  [1]   SEQUENCE OF CrossReference OPTIONAL,
  278.                                        [2]   SecurityParameters DEFAULT {}}
  279.  
  280.  
  281.  
  282.  
  283.          PAGE18  Fascicle VIII.8 - Rec. X.518
  284.  
  285.          12.4.2 The various components have  the  meanings  as  defined  in   12.4.2.1  to
  286.          12.4.2.3.
  287.          12.4.2.1  The info component is used to  convey  DMD-specific  information  among
  288.          DSAs which are involved in the processing of a common request. This component  is
  289.          of type DomainInfo, which is of unrestricted type.
  290.          12.4.2.2  The crossReferences component is not  present  in  the  ChainingResults
  291.          unless the returnCrossRefs component of the corresponding request had  the  value
  292.          TRUE. This component consists of a sequence  of  CrossReference  items,  each  of
  293.          which contains a contextPrefix and an accessPoint descriptor (see  12.8).
  294.                CrossReference          ::=   SET{
  295.                      contextPrefix    [0]   DistinguishedName,
  296.                      accessPoint      [1]   AccessPoint}
  297.                A CrossReference may be added  by  a  DSA  when  it  matches  part  of  the
  298.          targetObject argument of an abstract-operation with one of its context  prefixes.
  299.          The administrative authority of a DSA may  have  a  policy  not  to  return  such
  300.          knowledge, and will in this case not add an item to the sequence.
  301.          12.4.2.3  The SecurityParameters component is specified in Recommendation  X.511.
  302.          Its absence is deemed  equivalent  to  there  being  an  empty  set  of  security
  303.          parameters.
  304.          12.5   Operation progress
  305.          12.5.1 An  OperationProgress  value  describes  the  state  of  progress  in  the
  306.          performance of an abstract-operation which several DSAs must participate in.
  307.                OperationProgress  ::=  SET {
  308.                      nameResolutionPhase [0]
  309.                            ENUMERATED {
  310.                                  notStarted  (1),
  311.                                  proceeding  (2),
  312.                                  completed   (3)},
  313.                      nextRDNToBeResolved [1]
  314.                            INTEGER OPTIONAL}
  315.          12.5.2 The various components have the  meanings  as  defined  in   12.5.2.1  and
  316.          12.5.2.2.
  317.          12.5.2.1  The nameResolutionPhase component indicates what phase has been reached
  318.          in handling the targetObject name of an operation. Where this indicates that name
  319.          resolution has notStarted, then a DSA has not hitherto been reached with a naming
  320.          context containing the initial  RDN(s)  of  the  name.   If  name  resolution  is
  321.          proceeding, then the initial part of the name has been recognized, though the DSA
  322.          holding the target object has  not  yet  been  reached.  The  nextRDNToBeResolved
  323.          indicates how much of the name has already been recognized ( 12.5.2.2).  If  name
  324.          resolution is completed, then the DSA holding the target object has been reached,
  325.          and performance of the operation proper is proceeding.
  326.          12.5.2.2  The nextRDNToBeResolved indicates to the DSA which of the RDNs  in  the
  327.          targetObject name is the next to be resolved. It takes the form of an integer  in
  328.          the range one to the number of RDNs in the name. This component is  only  present
  329.          if the nameResolutionPhase component has the value proceeding.
  330.          12.6   Trace information
  331.          12.6.1 A TraceInformation value carries forward a record of the DSAs  which  have
  332.          been involved in the performance of an  operation.  It  is  used  to  detect  the
  333.          existence of, or avoid, loops which might arise from  inconsistent  knowledge  or
  334.          from the presence of alias loops in the DIT.
  335.                TraceInformation  ::=   SEQUENCE OF TraceItem
  336.                TraceItem               ::=   SET {
  337.                      dsa                     [0]  Name,
  338.                      targetObject           [1]  Name OPTIONAL,     
  339.                      operationProgress      [2]  OperationProgress }
  340.          12.6.2 Each DSA which is propagating an operation to another adds a new  item  to
  341.          the trace information.  Each such TraceItem contains:
  342.                a)  the Name of the dsa which is adding the item;
  343.                b)  the targetObject Name which the DSA adding the item  received  on  the
  344.                   incoming request.  This parameter is omitted if the query being chained
  345.                   came from a DUA (in which case its  implied  value  is  the  object  or
  346.                   baseObject in XOperation), or if its value is the same as  the  (actual
  347.                   or implied)  targetObject  in  the  ChainingArgument  of  the  outgoing
  348.                   request;
  349.                c)  the operationProgress which the DSA adding the item  received  on  the
  350.  
  351.  
  352.  
  353.  
  354.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  355.  
  356.                incoming request.
  357.          12.7   Reference type
  358.          12.7.1 A ReferenceType value indicates one of  the  various  kinds  of  reference
  359.          defined in  10.
  360.                ReferenceType     ::=   
  361.                      ENUMERATED {
  362.                            superior          (1),
  363.                            subordinate       (2),
  364.                            cross             (3),
  365.                            nonSpecificSubordinate  (4)}
  366.          12.8   Access point
  367.          12.8.1 An AccessPoint value identifies a particular point at which access to  the
  368.          Directory, specifically to a DSA, can occur. The access point has a Name, that of
  369.          the DSA concerned, and a PresentationAddress, to be used in OSI communications to
  370.          that DSA.
  371.                AccessPoint       ::=   SET {
  372.                          ae-title      [0]  Name,
  373.                          address [1]  PresentationAddress }
  374.          12.9   Continuation reference
  375.          12.9.1 A ContinuationReference describes how the performance of all or part of an
  376.          abstract- operation can be continued at a different DSA or DSAs. It is  typically
  377.          returned as a referral when the DSA involved is unable or unwilling to  propagate
  378.          the request itself.
  379.                   ContinuationReference      ::=     SET {
  380.                      targetObject           [0]   Name,
  381.                      aliasedRDNs            [1]   INTEGER OPTIONAL,
  382.                      operationProgress      [2]   OperationProgress,
  383.                      rdnsResolved           [3]   INTEGER OPTIONAL,
  384.                      referenceType    [4]   ReferenceType OPTIONAL,
  385.                      -- only present in the DSP
  386.                      accessPoints           [5]   SET OF AccessPoint}
  387.          12.9.2 The various components have  the  meanings  as  defined  in   12.9.2.1  to
  388.          12.9.2.6.
  389.          12.9.2.1  The targetObject Name which is proposed to be used  in  continuing  the
  390.          operation. This might be different from the targetObject  Name  received  on  the
  391.          incoming request if, for example, an alias has been  dereferenced,  or  the  base
  392.          object in a search has been located.
  393.          12.9.2.2  The aliasedRDNs component indicates how many (if any) of  the  RDNs  in
  394.          the target object name have been produced by dereferencing an alias. The argument
  395.          is only present if an alias has been dereferenced.
  396.          12.9.2.3  The operationProgress which has been achieved, and  which  will  govern
  397.          the further performance of the abstract-operation by the DSAs named,  should  the
  398.          DSA or DUA receiving the ContinuationReference follow it up.
  399.          12.9.2.4  The rdnsResolved component value, (which need only be present  if  some
  400.          of the RDNs in the name have not been the subject of full  name  resolution,  but
  401.          have been assumed to be correct from a cross reference) indicates how  many  RDNs
  402.          have actually been resolved, using internal references only.
  403.          12.9.2.5  The referenceType component, which is only present in the DSA  abstract
  404.          service,  indicates  what  type  of  knowledge  was  used  in   generating   this
  405.          continuation.
  406.          12.9.2.6  The accessPoints component indicates the access points which are to  be
  407.          followed  up  to  achieve  this  continuation.  Where   Nonspecific   Subordinate
  408.          References are involved there may be more than one AccessPoint listed,  and  each
  409.          should be followed up, e.g. by multicasting.
  410.          13     Abstract-bind and abstract-unbind
  411.                DSABind and DSAUnbind, respectively, are used by a  DSA  at  the  beginning
  412.          and at the end of a period accessing another DSA.
  413.          13.1   DSA bind
  414.          13.1.1  A  DSABind  abstract-bind-operation  is  used  by  a  DSA  to  bind   its
  415.          chainedRead, chainedSearch, and chainedModify ports to those of another DSA.
  416.                DSABind     ::=   ABSTRACT-BIND
  417.                   TO              {chainedRead,
  418.                                  chainedSearch,
  419.                                  chainedModify}
  420.                   DirectoryBind
  421.  
  422.  
  423.  
  424.  
  425.          PAGE18  Fascicle VIII.8 - Rec. X.518
  426.  
  427.          13.1.2 The components of the DSABind are identical to their counterparts  in  the
  428.          DirectoryBind (see Recommendation X.511) with the following differences.
  429.          13.1.2.1   The  Credentials  of  the  DirectoryBindArgument  allows   information
  430.          identifying the AE-Title of the initiating DSA to be sent to the responding  DSA.
  431.          The AE-Title must be in the form of a Directory Distinguished Name.
  432.          13.1.2.2   The  Credentials  of  the   DirectoryBindResult   allows   information
  433.          identifying the AE-Title of the responding DSA to be sent to the initiating  DSA.
  434.          The AE-Title must be in the form of Distinguished Name.
  435.          13.2   DSA unbind
  436.          13.2.1 A DSAUnbind operation is used to unbind the Chained Read,  Chained  Search
  437.          and Chained Modify ports of a pair of DSAs.
  438.                DSAUnbind   ::=   ABSTRACT-UNBIND
  439.                   FROM           {chainedRead,
  440.                                  chainedSearch,
  441.                                  chainedModify}
  442.          13.2.2 There are no arguments, results or errors.
  443.          14     Chained abstract-operations
  444.          14.1   Corresponding to each of the ports of the Directory abstract service is  a
  445.          port of the DSA which allows the abstract service to be provided  by  cooperating
  446.          DSAs. The abstract-operations in the corresponding ports are also  in  one-to-one
  447.          correspondence. The names of the ports and the  abstract-  operations  have  been
  448.          chosen to reflect this correspondence, with the port or abstract-operation in the
  449.          DSA abstract service being formed from that of the Directory abstract service  by
  450.          prefixing the word "Chained". The resulting ports and abstract-operations are  as
  451.          follows:
  452.                ChainedReadPort:  ChainedRead,
  453.                                  ChainedCompare,
  454.                                  ChainedAbandon
  455.                ChainedSearchPort:      ChainedList,
  456.                                  ChainedSearch
  457.                ChainedModifyPort:      
  458.                                  ChainedAddEntry,
  459.                                  ChainedRemoveEntry,
  460.                                  ChainedModifyEntry,
  461.                                  ChainedModifyRDN
  462.          14.2   The arguments, results, and errors of the chained abstract-operation  are,
  463.          with one exception, formed systematically from the arguments, results, and errors
  464.          of the corresponding abstract- operations in the Directory abstract  service  (as
  465.          described in  14.3). The one exception is the ChainedAbandon  abstract-operation,
  466.          which is syntactically equivalent to its Directory abstract- service  counterpart
  467.          (described in  14.4).
  468.          14.3   A ChainedX abstract-operation is used to propagate between DSAs a  request
  469.          which (normally) originated as a DUA invoking an X abstract-operation at  a  DSA,
  470.          that DSA having elected to chain it.  The arguments of the abstract-operation may
  471.          optionally be signed by the invoker, and, if so requested, the performing DSA may
  472.          sign the results.
  473.          14.3.1 The systematic derivation of a Chained  abstract-operation  ChainedX  from
  474.          its counterpart X is as follows:
  475.                given:
  476.                X   ::=
  477.                   ABSTRACT-OPERATION
  478.                          ARGUMENT      XArgument
  479.                          RESULT        XResult 
  480.                          ERRORS   {...,      Referral,...}
  481.                the Chained abstract-operation is derived as:
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  497.  
  498.                   ChainedX    ::=
  499.                   ABSTRACT-OPERATION
  500.                          ARGUMENT OPTIONALLY-SIGNED SET{
  501.                                  ChainingArgument,
  502.                                  [0]  XArgument}
  503.                   RESULT  OPTIONALLY-SIGNED SET{
  504.                                  ChainingResult,
  505.                                  [0] XResult}
  506.                   ERRORS {...,DsaReferral,...}
  507.                Note - The definitive specification of the DSA abstract service in Annex  A
  508.          applies this derivation in full to the Chained abstract-operations.
  509.          14.3.2 The arguments of the  derived  abstract-operation  have  the  meanings  as
  510.          described in  14.3.2.1 and 14.3.2.2.
  511.          14.3.2.1  The ChainingArgument contains that  information,  over  and  above  the
  512.          original DUA-supplied arguments, which is needed in order for the performing  DSA
  513.          to carry out the operation.  This information type is defined in  12.3.
  514.          14.3.2.2   The  XArgument  contains  the  original  DUA-supplied  arguments,   as
  515.          specified in the appropriate clause of Recommendation X.511.
  516.          14.3.3 Should the request succeed,  the  result  will  be  returned.  The  result
  517.          parameters have the meanings as described in  14.3.3.1 and 14.3.3.2.
  518.          14.3.3.1  The ChainingResult contains the information, over and above that to  be
  519.          supplied to the originating DUA, which may be needed by previous DSAs in a chain.
  520.          This information type is defined in  12.4.
  521.          14.3.3.2  The XResult  contains  the  result  which  is  being  returned  by  the
  522.          performer of this abstract- operation, and which is intended to be passed back in
  523.          the result to the originating DUA.  This  information  is  as  specified  in  the
  524.          appropriate clause of Recommendation X.511.
  525.          14.3.4 Should the request fail, one of the listed errors will  be  returned.  The
  526.          set of errors which may be  reported  are  as  described  for  the  corresponding
  527.          abstract-operation in Recommendation X.511, except that DSAReferral  is  returned
  528.          instead of Referral. The various errors are defined or referenced in  15.
  529.          14.4   A ChainedAbandon abstract-operation is used by  one  DSA  to  indicate  to
  530.          another that it is no longer interested in having a  previously  invoked  chained
  531.          operation performed. This may be for any of a number of  reasons,  of  which  the
  532.          following are examples:
  533.                a)  the operation which led to the DSA originally chaining has itself been
  534.                   abandoned, or has implicitly  been  aborted  by  the  breakdown  of  an
  535.                   association;
  536.                b)  the DSA has obtained the necessary information in  another  way,  e.g.
  537.                   from a faster responding DSA involved in a multicast.
  538.                A DSA is never obliged to issue a ChainedAbandon,  or  indeed  to  actually
  539.          abandon an operation if requested to do so.
  540.                If ChainedAbandon actually succeeds  in  stopping  the  performance  of  an
  541.          operation, then a result will be returned, and the subject operation will  return
  542.          an Abandoned abstract-error. If the ChainedAbandon does not succeed  in  stopping
  543.          the operation, then it itself will return an AbandonFailed error.
  544.          15     Chained abstract-errors
  545.          15.1   Introduction
  546.          15.1.1 For the most part, the same abstract-errors can be  returned  in  the  DSA
  547.          abstract service which can be returned in  the  Directory  abstract-service.  The
  548.          exceptions are that the DSAReferral "error" is returned (see  15.2),  instead  of
  549.          Referral, and the following service problems have the same  abstract  syntax  but
  550.          different semantics.
  551.                a)  invalidReference.
  552.                b)  loopDetected.
  553.          15.1.2 The precedence of the abstract-errors which may  occur  is  as  for  their
  554.          precedence   in   the   Directory   abstract    service,    as    specified    in
  555.          Recommendation X.511.
  556.          15.2   DSA Referral
  557.          15.2.1 The DSAReferral abstract-error is generated by a DSA  when,  for  whatever
  558.          reason, it doesn't wish to continue performing an abstract-operation by  chaining
  559.          or  multicasting  the  abstract-operation  to  one  or  more  other   DSAs.   The
  560.          circumstances where it may return a referral are described in  8.4.
  561.                DSAReferral       ::=   
  562.                   ABSTRACT-ERROR
  563.  
  564.  
  565.  
  566.  
  567.          PAGE18  Fascicle VIII.8 - Rec. X.518
  568.  
  569.                       PARAMETER SET{
  570.                          [0]  ContinuationReference,
  571.                          contextPrefix [1] DistinguishedName OPTIONAL }
  572.          15.2.2 The various parameters have the meanings as  described  in   15.2.2.1  and
  573.          15.2.2.2.
  574.          15.2.2.1  The  ContinuationReference  contains  the  information  needed  by  the
  575.          invoker to propagate an appropriate further request, perhaps to another DSA. This
  576.          information type is specified in  12.9.
  577.          15.2.2.2  If the returnCrossRefs component  of  the  ChainingArguments  for  this
  578.          abstract-operation had the value TRUE, and the referral is  being  based  upon  a
  579.          subordinate or cross-reference, then the contextPrefix parameter  may  optionally
  580.          be included. The administrative authority of any DSA will decide which  knowledge
  581.          references, if any, can be returned in this manner (the others, for example,  may
  582.          be confidential to that DSA).
  583.          SECTION 5 - Distributed operations procedures
  584.          16     Introduction
  585.          16.1   Scope and limits
  586.                This paragraph specifies the procedures for distributed  operation  of  the
  587.          Directory which are  performed  by  DSAs.  Each  DSA  individually  performs  the
  588.          procedures described below: the collective action of all DSAs produces  the  full
  589.          set of services provided to users by the Directory.
  590.                The description of procedures for a single DSA is based on  the  models  in
  591.           7 to 10 of this Recommendation.
  592.                It should  be  noted  that  the  model  and  procedures  are  included  for
  593.          expositional purposes only and are  not  intended  to  constrain  or  govern  the
  594.          implementation of an actual DSA.
  595.                This paragraph is divided into three sub-paragraphs: this  introduction,  a
  596.          conceptual model for describing directory behaviour and an introduction  of  both
  597.          DSA-Centred and Operation-Centred models of DSA operations.
  598.          16.2   Conceptual model
  599.                The complexity of the Directory's distributed operation  gives  rise  to  a
  600.          need for conceptual modelling using  both  narrative  and  pictorial  descriptive
  601.          techniques. However,  neither  the  narrative  nor  graphic  diagrams  should  be
  602.          construed as a formal description of distributed directory operation.
  603.          16.3   Individual and cooperative operation of DSAs
  604.                The model views DSA operation from two separate perspectives, which,  taken
  605.          together, provide a complete, operational picture of the Directory.
  606.                a)  DSA-Centred Perspective. In this perspective the set of procedures that 
  607.                   support the directory is described from the viewpoint of a single  DSA.
  608.                   This makes it possible to provide a definitive  specification  of  each
  609.                   procedure and to fully account for their interrelationships and overall
  610.                   control structure.  18 describes the DSA procedures from a  DSA-centred
  611.                   perspective.
  612.                b)  Operation-Centred Perspective. The DSA-centred view provides  complete
  613.                   detail but makes it difficult to understand the structure of individual
  614.                   operations, which may undergo processing by multiple DSAs. Consequently
  615.                   17  adopts  a  primarily  operation-centred  view  to   introduce   the
  616.                   processing phases applicable to each.
  617.                To support the distributed  operation  of  the  directory,  each  DSA  must
  618.          perform actions needed to realize the intent of  each  operation  and  additional
  619.          actions needed to distribute that realization across multiple DSAs.  17  explores
  620.          the distinction between these two kinds of actions. In  18 both kinds of  actions
  621.          are specified in detail.
  622.          17     Distributed directory behaviour
  623.          17.1   Cooperative fulfillment of operations
  624.                Each DSA is equipped with procedures capable of completely  fulfilling  all
  625.          Directory operations. In the  case  that  a  DSA  contains  the  entire  DIB  all
  626.          operations are, in fact, completely carried out within that DSA. In the case that
  627.          the DIB is distributed across multiple DSAs the completion of a typical operation
  628.          is fragmented, with just a portion of that  operation  carried  out  in  each  of
  629.          potentially many cooperating DSAs.
  630.                In the distributed environment, the typical DSA sees each  operation  as  a
  631.          transitory event; the operation is invoked by a DUA or some other  DSA;  the  DSA
  632.          carries out processing on the object and then directs it toward another  DSA  for
  633.          further processing.
  634.  
  635.  
  636.  
  637.  
  638.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  639.  
  640.                An  alternate  view  considers  the  total  processing  experienced  by  an
  641.          operation during its fulfillment by multiple, cooperating DSAs. This  perspective
  642.          reveals the common processing phases that apply to all operations.
  643.          17.2   Phases of operation processing
  644.                Every Directory operation may be thought of as  comprising  three  distinct
  645.          phases:
  646.                a)  the Name Resolution phase - in which the name of the object  on  whose
  647.                   entry a particular operation is to be performed is used to  locate  the
  648.                   DSA which holds the entry;
  649.                b)  the Evaluation phase - in which the operation specified by a particular 
  650.                   directory request (e.g. read) is actually performed;
  651.                c)  the Results Merging phase -  in  which  the  results  of  a  specified
  652.                   operation are returned to the requesting DUA. If  a  chaining  mode  of
  653.                   interaction was chosen, the Results Merging phase may  involve  several
  654.                   DSAs, each of which chained the original  request  or  sub-request  (as
  655.                   defined in  17.3.1 Request Decomposition) to another DSA during  either
  656.                   or both of the preceding phases.
  657.                In  the  case  of  the  operations  Read,  Compare,   List,   Search,   and
  658.          ModifyEntry, name resolution takes place on  the  object  name  provided  in  the
  659.          argument of the operation. In the case of AddEntry, RemoveEntry,  and  ModifyRDN,
  660.          name resolution takes place on  the  name  of  the  immediately  superior  object
  661.          (derived by removing the final RDN  from  the  name  provided  in  the  operation
  662.          argument).
  663.                An operation on a particular entry may initially be directed at any DSA  in
  664.          the Directory. That DSA used its knowledge, possibly in  conjunction  with  other
  665.          DSAs to process the operation through the three phases.
  666.          17.2.1 Name resolution phase
  667.                Name Resolution is the process of  sequentially  matching  each  RDN  in  a
  668.          purported Name to an arc (or vertex) of the DIT, beginning logically at the  Root
  669.          and progressing downwards in the DIT.  However, because the  DIT  is  distributed
  670.          between arbitrarily many DSAs, each DSA may only be able to perform a fraction of
  671.          the name resolution process. A given DSA performs its part of the Name Resolution
  672.          process by traversing its local knowledge. This process is described in  18.6 and
  673.          the accompanying diagrams (Figures 11/X.518 to 13/X.518). When a DSA reaches  the
  674.          border of its naming  context,  it  will  know  from  the  knowledge  information
  675.          contained therein, whether the resolution can be  continued  by  another  DSA  or
  676.          whether the name is erroneous.
  677.          17.2.2 Evaluation phase
  678.                When the name resolution phase has been  completed,  the  actual  operation
  679.          required (e.g. read or search) is performed.
  680.                Operations  that  involve  a  single  entry  -  Read,  Compare,   AddEntry,
  681.          RemoveEntry, ModifyRDN and ModifyEntry - can be carried out entirely  within  the
  682.          DSA in which that entry has been located.  AddEntry,  RemoveEntry  and  ModifyRDN
  683.          may affect knowledge in more than one DSA. See  18.7.1.
  684.                Operations that involve multiple entries  -  List  and  Search  -  need  to
  685.          locate subordinates of the target, which may or may not reside in the  same  DSA.
  686.          If they do not all reside in the same DSA, operations need to be directed to  the
  687.          DSAs specified in the subordinate references to complete the evaluation process.
  688.          17.2.3 Results merging phase
  689.                The results merging phase is entered  once  some  of  the  results  of  the
  690.          evaluation phase are available.
  691.                In those cases where the  operation  affected  only  a  single  entry,  the
  692.          result of the operation can simply be returned to the requesting  DUA.  In  those
  693.          cases where the operation has affected multiple entries on multiple DSAs, results
  694.          need to be combined.
  695.                The permissible responses returned to a  requestor  after  results  merging
  696.          include:
  697.                a)  a complete result of the operation;
  698.                b)  a result which is not complete because some parts of  the  DIT  remain
  699.                   unexplored (applies to List and Search only). Such a partial result may
  700.                   include  continuation  references  for  those  parts  of  the  DIT  not
  701.                   explored;
  702.                c)  an error (a referral being a special case);
  703.                d)  and if the requestor was a DSA, a ChainingResult.
  704.          17.3   Managing distributed operations
  705.  
  706.  
  707.  
  708.  
  709.          PAGE18  Fascicle VIII.8 - Rec. X.518
  710.  
  711.                Information is included in the argument of each abstract-operation which  a
  712.          DSA may be asked to perform indicating the  progress  of  each  operation  as  it
  713.          traverses various of the DSAs of the Directory. This makes it possible  for  each
  714.          DSA to perform the appropriate aspect of the processing required, and  to  record
  715.          the completion of that aspect  before  directing  the  operation  outward  toward
  716.          further DSAs.
  717.                Additional procedures are included in the DSA to physically distribute  the
  718.          operations and support other needs arising from their distribution.
  719.          17.3.1 Request decomposition
  720.                Request decomposition is a process performed internally by a DSA  prior  to
  721.          communication with one or more other DSAs. A request is decomposed  into  several
  722.          sub-requests such that each of the latter accomplishes a  part  of  the  original
  723.          task. Request decomposition can be used, for example, in  the  search  operation,
  724.          after the base object has been found.  After  decomposition,  each  of  the  sub-
  725.          requests may then be chained or multicast to other DSAs, to continue the task.
  726.          17.3.2 DSA as Request responder
  727.                A DSA that receives a request can check the progress of that request  using
  728.          the Operation Progress parameter. This will determine whether  the  operation  is
  729.          still in the name resolution phase or has reached the evaluation phase, and  what
  730.          portion of the operation the DSA should attempt to satisfy.  If  the  DSA  cannot
  731.          fully satisfy the request it must either pass the operation on  to  one  or  more
  732.          DSAs which can help to fulfill the  request  (by  chaining  or  multicasting)  or
  733.          return a referral to another DSA or terminate the request with an error.
  734.          17.3.3 Completion of operations
  735.                Each DSA that has initiated an operation or propagated an operation to  one
  736.          or more other DSAs must keep track of that operation's existence  until  each  of
  737.          the other DSAs has returned a result or error, or the  operation's  maximum  time
  738.          limit has expired. This requirement applies to all operations, propagation  modes
  739.          and processing phases.  It  ensures  the  orderly  closing  down  of  distributed
  740.          operations that have propagated out into the Directory.
  741.          17.4   Other considerations for distributed operation
  742.          17.4.1 Request validation
  743.                On receipt of a directory operation  a  DSA  must  initially  validate  the
  744.          operation to ensure that it can be progressed. Circumstances such as loops within
  745.          the DIT caused by inappropriate use of aliases or the use of erroneous  knowledge
  746.          may cause operations to be sent to DSAs that cannot be processed.
  747.                In the simple case these erroneous circumstances are adequately handled  by
  748.          name resolution procedures as described  in   18.  However,  where  circumstances
  749.          cause operations to loop (as described  in   17.4.3)  name  resolution  alone  is
  750.          inadequate.
  751.                The request validation actions ensures that a loop is detected  before  any
  752.          attempt is made to progress an operation through the erroneous data caused by the
  753.          loop. The detection process is  carried  out  by  the  loop  detection  procedure
  754.          specified in  18.5.1.
  755.                Where security procedures are in force  request  validation  also  verifies
  756.          the identity of the requesting DSA or DUA, and the validity of the request.
  757.          17.4.2 State and trace information
  758.                The progression of an operation within the directory and  the  presence  of
  759.          loop conditions are determined by an operation's "state", where state is  defined
  760.          to be the following:
  761.                -   the name of the DSA currently processing the operation;
  762.                -   the name of the targetObject as contained within the argument  of  the
  763.                   operation;
  764.                -   the operationProgress as contained within the argument of the operation 
  765.                   and as defined in  12.5.
  766.                In addition to the current state of an operation, a DSA also needs to  know
  767.          all  previous  states  for  that   operation.   These   are   recorded   in   the
  768.          traceInformation argument and conveyed with the operation.
  769.                The traceInformation argument forms the basis of  loop  avoidance/detection
  770.          strategies as specified in 17.4.3.
  771.          17.4.3 Looping
  772.                Within the context of a particular directory operation a loop occurs if  at
  773.          any time the operation returns to a previous state (as defined above). Looping is
  774.          managed using the traceInformation argument. Two strategies are defined to handle
  775.          loops. In loop detection a DSA determines whether  a  loop  has  occurred  in  an
  776.  
  777.  
  778.  
  779.  
  780.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  781.  
  782.          incoming operation and,  if  so  returns  an  error.  In  loop  avoidance  a  DSA
  783.          determines whether an operation, if forwarded, would yield a loop.
  784.          17.4.4 Service controls
  785.                Some  service  controls  need  special  consideration  in  the  distributed
  786.          environment in order that the operation is processed the way that was requested.  
  787.                a)   chainingProhibited:  A  DSA  consults  this  service   control   when
  788.                   determining the mode of propagation of an operation. If it is set  then
  789.                   the DSA always uses referral mode. If, however, it is not set, the  DSA
  790.                   can choose whether  to  use  chaining  or  referral  depending  on  its
  791.                   capabilities.
  792.                b)  timeLimit: A DSA needs to take account  of  this  service  control  to
  793.                   ensure that the time limit is not exceeded in that DSA. A DSA requested
  794.                   to perform an  operation  by  a  DUA,  initially  heeds  the  timeLimit
  795.                   expressed by the DUA as the  available  elapsed  time  in  seconds  for
  796.                   completion of the operation. If chaining is required, the timeLimit  is
  797.                   included in the chaining argument to be passed to the next  DSA(s).  In
  798.                   this case the same value of the limit is used for each chained request,
  799.                   and is the (UTC) time by which the operation must be completed to  meet
  800.                   the originally specified constraint. On receiving a  chaining  argument
  801.                   with a timeLimit specified, the receiving DSA respects this limit.
  802.                c)  sizeLimit: A DSA needs to take account  of  this  service  control  to
  803.                   ensure that the list of results does not exceed the size specified. The
  804.                   limit, as included in the common argument of the original  request,  is
  805.                   conveyed unchanged as the  request  is  chained/multicast.  If  request
  806.                   decomposition is required, the same value is included in  the  argument
  807.                   to be passed to the next DSA: that is, the full limit is used for  each
  808.                   sub-request. When the results are returned the requestor  DSA  resolves
  809.                   the multiple results and applies the limit to the total to ensure  that
  810.                   only the  requested  numbers  are  returned.  If  the  limit  has  been
  811.                   exceeded, this is indicated in the reply.
  812.                d)  Priority: In all modes of propagation, each  DSA  is  responsible  for
  813.                   ensuring that the processing of operations is ordered so as to  support
  814.                   this service control if present.
  815.                e)  localScope: The operation is limited to a locally  defined  scope  and
  816.                   cannot be propagated by any of the modes.
  817.                f)  scopeOfReferral: If the DSA returns a referral or partial result to  a
  818.                   List or Search  operation,  then  the  embedded  ContinuationReferences
  819.                   shall be within the requested scope.
  820.                All other service controls need to be respected, but  their  use  does  not
  821.          require any special consideration in the distributed environment.
  822.          17.4.5 Extensions
  823.          17.4.5.1  If  a  DSA  encounters  an  extended  abstract-operation  in  the  name
  824.          resolution phase of processing and determines that the abstract-operation  should
  825.          be chained to one or more other DSAs, it shall include unchanged in  the  chained
  826.          abstract-operation any extensions present.
  827.                Note - An Administrative Authority may determine that it is appropriate  to
  828.          return a ServiceError with problem unwillingToPerform if  it  does  not  wish  to
  829.          propagate an extension.
  830.          17.4.5.2  If a DSA encounters an extension in the execution phase of  processing,
  831.          two possibilities may arise. If the extension is  not  critical,  the  DSA  shall
  832.          ignore the extension. If the extension  is  critical,  the  DSA  shall  return  a
  833.          ServiceError with problem unavailableCriticalExtension.
  834.                A critical extension to a multiple object  operation  may  result  in  both
  835.          results and service errors of this variety. A DSA merging such results and errors
  836.          shall discard these service errors and  employ  the  unavailableCriticalExtension
  837.          component   of   PartialOutcomeQualifier    as    described    in    10.1.1    of
  838.          Recommendation X.511.
  839.          17.4.6 Alias Dereferencing
  840.                Alias dereferencing is the process of creating a new  target  object  name,
  841.          by replacing the alias entry distinguished  name  part  of  the  original  target
  842.          object name with the Aliased Object Name attribute value from  the  alias  entry.
  843.          The object name in the operation is not affected by alias dereferencing.
  844.          17.5   Authentication of distributed operations
  845.                Users of  the  Directory  together  with  administrative  authorities  that
  846.          provide directory services may,  at  their  discretion,  require  that  directory
  847.  
  848.  
  849.  
  850.  
  851.          PAGE18  Fascicle VIII.8 - Rec. X.518
  852.  
  853.          operations be authenticated. For any particular directory operation the nature of
  854.          the authentication process will depend upon the security policy in force.
  855.                Two sets of authentication  procedures  are  available  which  collectively
  856.          enable a range of authentication requirements to be met. One  set  of  procedures
  857.          are those provided by Bind: these facilitate authentication between two directory
  858.          application-entities for the purposes of establishing an  association.  The  Bind
  859.          procedures accommodate a range of authentication exchanges from a simple exchange
  860.          of identities to strong authentication.
  861.                In addition  to  the  peer  entity  authentication  of  an  association  as
  862.          provided by Bind, additional procedures  are  defined  within  the  directory  to
  863.          enable individual operations to be authenticated. Two distinct sets of  directory
  864.          authentication procedures are defined. One facilitates originator  authentication
  865.          services, which address the authentication, by a DSA, of  the  initiator  of  the
  866.          original service request.  The  second  set  facilitates  results  authentication
  867.          services which address the authentication, by an initiator, of any  results  that
  868.          are returned.
  869.                For originator authentication two procedures are defined, one based upon  a
  870.          simple exchange of identities, termed  identity  based  authentication,  and  one
  871.          based upon digital signature techniques, termed signature  based  authentication.
  872.          The former of these procedures  is  rudimentary  in  nature  since  the  identity
  873.          exchange is based upon the exchange of distinguished names which are  transmitted
  874.          in the clear.
  875.                For authentication of results a single results authentication procedure  is
  876.          defined, based upon digital signature techniques; due to  the  generally  complex
  877.          nature of results collation a simpler, identity-based procedure is not defined.
  878.                Authentication of error responses is not supported by these procedures.
  879.                The services described above are  to  be  considered  as  augmenting  those
  880.          provided by the Bind service; Bind procedures are assumed to have  been  effected
  881.          successfully prior to authentication of directory operations.
  882.                The procedures to be effected by a DSA in providing originator and  results
  883.          authentication are specified in 18.9.
  884.          18     DSA behaviour
  885.          18.1   Introduction
  886.                Corresponding to each operation invoked by a requestor (e.g.  DUA  or  DSA)
  887.          the performing DSA must behave in accordance with well-defined procedures so that
  888.          an appropriate  response  will  be  returned  deterministically.  This  paragraph
  889.          specifies the allowed  behaviour  by  modelling  a  DSA  in  terms  of  processes
  890.          implementing a particular collection of procedures. It is  important  to  realize
  891.          that a DSA need conform only to the externally visible behaviour implied by these
  892.          procedures, and not to the procedures themselves.
  893.          18.2   Overview of the DSA behaviour
  894.                The behaviour of the distributed Directory as a whole is  the  sum  of  the
  895.          behaviour of its cooperating DSAs. Each of these DSAs can be viewed as a process,
  896.          supported internally by a set of procedures.
  897.                Figure 6/X.518 illustrates the internal view of the DSA behaviour.
  898.                The Operation Dispatcher is the main controlling procedure  in  a  DSA.  It
  899.          guides each operation through the three phases of processing described in  17.2.
  900.                The  procedures  which  support  the   Operation   Dispatcher   are:   Name
  901.          Resolution, Find Naming Context, Local Name Resolution, Evaluation, Single Object
  902.          Evaluation, Multiple Object Evaluation, and  Result  Merging.  The  relationships
  903.          among these procedures are shown graphically in Figure 6/X.518.
  904.                                         FIGURE 6/X.518 - T0704560-88
  905.  
  906.          18.2.1 The operation dispatcher
  907.                Upon initially receiving an operation, the Operation  Dispatcher  validates
  908.          it, checking for loop or authentication errors. If none is found, it  calls  Name
  909.          Resolution, which returns either a Found indication, a  Reference,  or  an  error
  910.          indication. References are handled by a referral  or  by  a  Chain  or  Multicast
  911.          action, Found indications by calling the  Evaluation  procedure,  which  actually
  912.          performs the intended operation. Once returned, internal or external results  are
  913.          collated by Results Merging, and, in the  absence  of  errors,  returned  to  the
  914.          calling DUA or DSA.
  915.          18.2.2 Name resolution
  916.                Name Resolution calls Find Naming  Context.  If  the  returned  context  is
  917.          local, then Local Name resolution is called, otherwise Name Resolution returns  a
  918.  
  919.  
  920.  
  921.  
  922.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  923.  
  924.          reference or an error and terminates.  If Local  Name  Resolution  encounters  an
  925.          alias, it is dereferenced (if permitted) and Name Resolution repeats the analysis
  926.          from the beginning. Otherwise Local Name Resolution returns a  Found  indication,
  927.          an error or a Referral, which is passed back to the Operation Dispatcher.
  928.          18.2.3 Find naming context
  929.                Find Naming Context attempts to match the Purported  Name  against  Context
  930.          Prefixes.  If none matches, then Find Naming Context attempts to identify a cross
  931.          or superior reference.  If a context  prefix  is  matched,  Find  Naming  Context
  932.          returns a cross reference relating downwards in the DIT, or an indication that  a
  933.          suitable naming context  was  found  locally,  and  sets  NameResolutionPhase  to
  934.          "proceeding".
  935.          18.2.4 Local Name Resolution
  936.                The  Local  Name  Resolution  procedure  attempts  to  match  RDNs  in  the
  937.          Purported Name internally until it can return a Found indication.  If  unable  to
  938.          match all RDNs internally, it attempts  o  identify  first  specific,  then  non-
  939.          specific subordinate references, and return these to Name Resolution. If an alias
  940.          is  encountered,  and  dereferencing  is  allowed  by  the  service  controls,  a
  941.          dereferenced alias indication is returned. If dereferencing is  not  allowed,   a
  942.          Found indication is returned if and only if all RDNs had matched at the time  the
  943.          alias was encountered, otherwise a nameError is returned.
  944.          18.2.5 Evaluation
  945.                The  Evaluation  procedure  actually  executes  the   requested   Directory
  946.          operation against the target object. Depending on the type of  operation,  Single
  947.          Object Evaluation or Multiple Object Evaluation is invoked.
  948.          18.2.6 Single object evaluation
  949.                Single  object  evaluation  is  invoked  for   Read,   Compare,   AddEntry,
  950.          RemoveEntry, ModifyEntry, and ModifyRDN. It is in this procedure that  attributes
  951.          are actually retrieved, checked, or changed.
  952.          18.2.7 Multiple object evaluation
  953.                The Multiple Object Evaluation procedure is  invoked  for  the  Search  and
  954.          List operations to check filters, retrieve results, and  if  necessary,  dispatch
  955.          sub-requests.
  956.          18.2.8 Result merging
  957.                The Results Merging procedure collates  results  or  errors  received  from
  958.          other DSAs with locally retrieved results.
  959.          18.3   Specific operations
  960.                The operations fall into three categories of operations (in each  case  the
  961.          operation and its Chained counterpart are both in the same category).
  962.                a)   Single-Object  Operations:  Read,  Compare,  AddEntry,   ModifyEntry,
  963.                   ModifyRDN, RemoveEntry.
  964.                b)  Multiple-Object Operations: List, Search.
  965.                c)  Abandon Operation, i.e. Abandon.
  966.                The handling of  these  categories  are  described  in   18.3.1  to  18.3.3
  967.          respectively. Since there is considerable similarity between the way that  a  DSA
  968.          behaves in performing an operation  of  a  service-port  and  in  performing  its
  969.          counterpart chained operation of  a  chained  service-port,  there  is  a  single
  970.          description applying to both, with exceptions to this rule being noted.
  971.          18.3.1 Single-object operations
  972.                Single-object operations are those which affect a single entry,  and  which
  973.          therefore can be carried out entirely within the DSA which contains the entry  on
  974.          which the operation is to be performed. Such operations can be commonly described
  975.          by the following sequence of events:
  976.                1)  Activate the Operation Dispatcher.
  977.                2)  Perform Name Resolution to locate the object whose name was  specified
  978.                   as the argument of the operation.
  979.                3)  Perform the single-object evaluation procedure.
  980.                4)  Service controls, such as time limit, should  be  checked  during  the
  981.                   course of the operation to enforce the  constraints  specified  by  the
  982.                   user.
  983.                5)  Return the results to the DUA or DSA which forwarded the request.
  984.          18.3.2 Multiple-object operations
  985.                Multiple-object operations are those which  affect  several  entries  which
  986.          may or may not be co- located in the same DSA. Such operations may thus entail  a
  987.          cooperative effort by several DSAs to locate  and  operate  on  all  the  entries
  988.          affected by the requested operation. The common behaviour of such operations  can
  989.  
  990.  
  991.  
  992.  
  993.          PAGE18  Fascicle VIII.8 - Rec. X.518
  994.  
  995.          be summarized as follows:
  996.                1)  Activate the Operation Dispatcher.
  997.                2)  Perform the Name Resolution procedures to locate the object whose name
  998.                   was specified as the argument of operation.
  999.                3)  Once the target object of the operation has been located, perform  the
  1000.                   multiple-object evaluation procedures.
  1001.                4)  If request decomposition has taken place in one of the multiple-object
  1002.                   evaluation procedures and sub-requests have  been  chained/multicasted,
  1003.                   the Operation Dispatcher maintains the current local results, waits for
  1004.                   chained responses, and activates Results Merging.
  1005.                5)  Service Controls such as time limit,  size  limit  should  be  checked
  1006.                   during the course of the operation to  remain  within  the  constraints
  1007.                   specified in the common argument.
  1008.                6)  Return the results or errors to the DUA or  DSA  which  forwarded  the
  1009.                   request.
  1010.          18.3.3 Abandon operation
  1011.                On receipt of an  abandon  operation,  a  DSA  determines  whether  it  can
  1012.          abandon the specified operation, and, if so, abandons it  and  returns  a  result
  1013.          (the operation that was abandoned returns  an  Abandoned  error).  If  it  cannot
  1014.          abandon the specified operation, it returns an AbandonFailed error.
  1015.                The following specifies the procedure specific to the Abandon operation.
  1016.                1)  Locate the operation whose  invoke  identifier  is  specified  as  the
  1017.                   argument of the Abandon operation.
  1018.                2)  Optionally compose request(s) with the proper invoke-id to abandon any
  1019.                   outstanding chained/multicast operations to other DSAs.
  1020.                3)  Optionally, the abandon operation is performed locally as  defined  in
  1021.                   Recommendation X.511. 
  1022.                4)  Return result or error to the DUA or DSA which forwarded the request.
  1023.          18.4   Operation dispatcher
  1024.          18.4.1 Introduction
  1025.                The Operation Dispatcher utilizes the Name Resolution  described  in   18.6
  1026.          of this Recommendation and all the interactions (i.e. DSA to DSA or DUA  to  DSA)
  1027.          necessary to locate  target  entries  in  a  distributed  directory  environment.
  1028.          Figure 7/X.518 shows a detailed diagram describing the Operation Dispatcher.  The
  1029.          algorithm is summarized below.
  1030.                                         FIGURE 7/X.518 - T0704571-88
  1031.  
  1032.          18.4.2 Implicit actions
  1033.          18.4.2.1 Security
  1034.                It should be  noted  that  although  the  checking  of  signatures  is  not
  1035.          explicitly included in this algorithm, this action is always the first step  when
  1036.          a signed operation, result or error arrives to the DSA.
  1037.                Note - This does not include embedded signatures.
  1038.                Should the signature be invalid, or absent in a  case  when  it  should  be
  1039.          present, a  SecurityError  is  returned.  All  processing  of  the  operation  is
  1040.          terminated and the operation dispatcher goes to its idle state.
  1041.                The signing of an operation result if  required  is  likewise  an  implicit
  1042.          last step before sending it off.
  1043.          18.4.2.2 ServiceControls
  1044.                Although  the  ServiceControls  are  not  explicitly  mentioned,  they  are
  1045.          respected. For example, the checking of the timeLimit of  an  arriving  operation
  1046.          and the checking of sizeLimit before sending a result are regarded as  mandatory.
  1047.          These are discussed in  17.4.4.
  1048.          18.4.2.3 TraceInformation
  1049.                TraceInformation is always updated with the state it  arrived  to  the  DSA
  1050.          in, before including it in the ChainingArguments. That is not  explicitly  stated
  1051.          in the text below.
  1052.          18.4.3 Arguments
  1053.                Chaining arguments for the particular operation.
  1054.          18.4.4 Results
  1055.                Chaining results for the particular operation.
  1056.          18.4.5 Errors
  1057.                Any error defined in this Recommendation.
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  1065.  
  1066.                18.4.6 Algorithm
  1067.                1)  Receive operation.
  1068.                   If the operation originates from  another  DSA  it  will  comprise  the
  1069.                   chaining arguments,  including:  operationProgress,  aliasDereferenced,
  1070.                   aliasedRDNs, targetObject Name and  traceInformation  as  well  as  the
  1071.                   parameters contained in the original operation.
  1072.                   If the operation  originates  from  a  DUA  it  will  not  contain  the
  1073.                   aliasDereferenced indication:  thus  adopt  the  value  of  FALSE.  The
  1074.                   argument also  does  not  include  any  TraceInformation,  so  no  loop
  1075.                   checking needs to be performed. Set targetObject Name to  the  name  of
  1076.                   the  target  object  for  the  operation  (see  17.2).  Other  chaining
  1077.                   arguments are set according to the parameters  in  the  DAP  operation.
  1078.                   Originator is set to the name of the user.
  1079.                2)  If the operation came from a DSA, check the trace information for loops 
  1080.                   (activate Loop Detection). If a loop is detected,  return  ServiceError
  1081.                   with a problem of loopDetected and terminate the processing.
  1082.                3)  Perform security checks to the operation (originating either from a DUA 
  1083.                   or a DSA). If there  is  a  violation,  a  SecurityError  is  returned.
  1084.                   Otherwise, set operationProgress and aliasDereferenced according to the
  1085.                   operation argument or by default.
  1086.                4)  Perform the Name Resolution Procedure.
  1087.                   The Name Resolution Procedure will return a found indication, a  remote
  1088.                   reference, or an error indication.
  1089.                5)  One of the following errors may be raised:
  1090.                   ServiceError (UnableToProceed) -  if  a  DSA  determines  that  it  was
  1091.                   forwarded an operation pertaining to  information  which  it  does  not
  1092.                   hold.
  1093.                   ServiceError (invalidReference) - if a DSA determines that  an  invalid
  1094.                   knowledge reference was used.
  1095.                   NameError (noSuchObject) - if  the  purported  name  specified  in  the
  1096.                   operation request is determined to be invalid.
  1097.                   NameError (aliasProblem) - if an  alias  has  been  dereferenced  which
  1098.                   names no object.
  1099.                   Name Error (aliasDereferencingProblem) - if an alias was encountered in
  1100.                   a situation where it is not allowed.
  1101.                   On receipt of  any  one  of  these  errors,  the  Operation  Dispatcher
  1102.                   terminates and an error is returned to the DSA or DUA which  originated
  1103.                   the distributed operation.
  1104.                6)  If Found is returned, activate the Evaluation Procedure.
  1105.                7)  If a remote reference is returned (whether  from  Name  Resolution  or
  1106.                   Evaluation) it may be any one of the following: a  cross  reference,  a
  1107.                   subordinate  reference,  a  superior  reference   or   a   non-specific
  1108.                   subordinate reference.
  1109.                   If any such reference is returned it signifies that the Name Resolution
  1110.                   or Evaluation cannot be completed in this DSA, but must involve the DSA
  1111.                   identified in the reference.
  1112.                   The Operation Dispatcher then checks for referral or chaining mode.
  1113.                8)  If the referral mode or interaction has been selected, then, subject to 
  1114.                   scopeOfReferral, either  the  information  contained  in  the  returned
  1115.                   reference will be returned to the originating DUA or DSA as a referral,
  1116.                   or outOfScope ServiceError will be returned.  The  processing  of  this
  1117.                   operation will then terminate.
  1118.                   Note - If returnCrossRefs is true and reference is not  a  non-specific
  1119.                   subordinate reference or  superior  reference  and,  in  addition,  the
  1120.                   administrative authority is willing  to  provide  knowledge,  then  the
  1121.                   context prefix in the referral can be set.
  1122.                9)  If the chaining mode of interaction has been selected, the operation is 
  1123.                   forwarded to the DSA specified in the reference. In the case of a  non-
  1124.                   specific subordinate reference, the operation must be forwarded to each
  1125.                   DSA whose name was attained  as  part  of  a  non-specific  subordinate
  1126.                   reference. Such forwarding may be accomplished either  by  multicasting
  1127.                   or by sequentially chaining the operation.
  1128.                10) Perform Loop Avoidance for each operation to be sent.  If the avoidance 
  1129.                   turns out to be not applicable or no loop is detected, assign values to
  1130.                   the   chaining   arguments,   including   an   updated    version    of
  1131.  
  1132.  
  1133.  
  1134.  
  1135.          PAGE18  Fascicle VIII.8 - Rec. X.518
  1136.  
  1137.                traceInformation, and send the operations.
  1138.                   If no operations were sent (because  of  looping  problems),  return  a
  1139.                   serviceError  (with  problem  of  loopDetected)   and   terminate   the
  1140.                   processing of this operation.
  1141.                   Note -  If  the  decomposed  operation  was  aborted  because  of  loop
  1142.                   avoidance in this step it is a local matter whether to return a partial
  1143.                   result or to abort the whole operation and  return  an  error.  If  the
  1144.                   latter is chosen then return ServiceError (with  problem  loopDetected)
  1145.                   and terminate processing.
  1146.                11) Wait for the responses then perform the Results Merging procedure.
  1147.          18.5   Looping
  1148.                Within the context of a particular directory operation a loop occurs if  at
  1149.          any time the operation returns to a previous state (as defined in  17.4.2).  This
  1150.          does not mean  that  an  operation  cannot  be  processed  multiple  times  by  a
  1151.          particular DSA. However, it does mean that the DSA  will  not  process  the  same
  1152.          operation in the same state multiple times.
  1153.                Looping is managed  using  the  traceInformation  argument  as  defined  in
  1154.           12.6. Two strategies are defined to determine loops:  loop  detection  and  loop
  1155.          avoidance, described in  18.5.1 and 18.5.2 respectively.
  1156.          18.5.1 Loop detection
  1157.                Loop detection requires that a DSA, when receiving an  incoming  operation,
  1158.          determines whether the current state of the operation appears in the sequence  of
  1159.          previous states recorded in the traceInformation argument for that operation.  If
  1160.          it  does,  the  operation  is  looping  and  a  ServiceError  (with  problem   of
  1161.          loopDetected) is returned. Otherwise the DSA continues processing  the  operation
  1162.          according to the procedures specified in  18.4.
  1163.          18.5.2 Loop avoidance
  1164.                Loop avoidance requires that a DSA,  immediately  prior  to  forwarding  an
  1165.          operation to another DSA  (as  part  of  a  chaining,  multicasting,  or  request
  1166.          decomposition procedure), determines  whether  the  consequential  state  of  the
  1167.          operation (if known) appears on the sequence of previous states recorded  in  the
  1168.          trace-information argument for the original incoming operation. The consequential
  1169.          state is the value of TraceItem which will be added to  TraceInformation  by  the
  1170.          receiving DSA.
  1171.                In the event that the original incoming operation  was  to  a  service-port
  1172.          (rather than a chained- service-port) there will be no trace information and  the
  1173.          loop avoidance procedure will not be relevant.
  1174.                If the consequential state of  the  operation  is  known  and  does  appear
  1175.          within the traceInformation, the operation, if invoked, would cause a loop. Under
  1176.          this circumstance the  appropriate  response  to  the  original  operation  is  a
  1177.          ServiceError (with problem of loopDetected).
  1178.          18.6   Name resolution procedure
  1179.                This paragraph describes in  detail  the  Name  Resolution  procedure,  its
  1180.          input and output parameters, and its possible error  conditions.  Figure  7/X.518
  1181.          shows the overall procedure in  the  form  of  a  diagram.  The  Name  Resolution
  1182.          procedure calls two component procedures:
  1183.                1)  Find Naming Context (Figure 8/X.518).
  1184.                                         FIGURE 8/X.518 - T0704581-88
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.                                                       Fascicle VIII.8 - Rec. X.518   PAGE1
  1207.  
  1208.                   2)   Local Name Resolution (Figure 9/X.518).
  1209.                                         FIGURE 9/X.518 - T0704590-88
  1210.  
  1211.                The Name Resolution procedure conveys back to the Operation Dispatcher  the
  1212.          results of the above mentioned component procedures, except in the following  two
  1213.          cases. The first one is when the  Find  Naming  Context  procedure  identifies  a
  1214.          suitable context which has to be further examined, and returns the  local  naming
  1215.          context. The second case is when the Local Name  Resolution  procedure  indicates
  1216.          that it has dereferenced an alias.  In  the  former  case,  the  Name  Resolution
  1217.          procedure calls the Local Name Resolution procedure. In the latter case, the Name
  1218.          Resolution procedure is reactivated with the new target object name.
  1219.          18.6.1 Arguments
  1220.                The procedure makes use of the following arguments:
  1221.                -   the target object name (the purported name);
  1222.                -   operation progress;
  1223.                -   the value of the dontDereferenceAliases service control;
  1224.                -   the value of the aliasedRDNs parameter;
  1225.                -   the value of the aliasDereferenced parameter.
  1226.          18.6.2 Results
  1227.                There are two cases of successful outcome.
  1228.                The first of these returns:
  1229.                -   a reference;
  1230.                -   operation progress (updated appropriately);
  1231.                -   aliasDereferenced indication and, optionally, aliasedRDNs.
  1232.                The second of these returns:
  1233.                -   an indication that the naming context was  found  (together  with  the
  1234.                   local pointer to the entry); 
  1235.                -   operation progress (updated appropriately);
  1236.                -   aliasDereferenced indication and, optionally, aliasedRDNs.
  1237.          18.6.3 Errors
  1238.                One of the following errors may be returned:
  1239.                -   ServiceError (unableToProceed);
  1240.                -   ServiceError (invalidReference);
  1241.                -   NameError (aliasProblem, noSuchObject or aliasDereferencingProblem).
  1242.          18.6.4 Procedure
  1243.                1)  Activate the Find Naming Context procedure.
  1244.                2)  Wait for response from Find Naming Context procedure.
  1245.                3)  Receive returned results or error, i.e. Local  Naming  Context  Found,
  1246.                   Remote  Reference,  Unable   to   Proceed   Error,   Name   Error,   or
  1247.                   invalidReference.
  1248.                4)  Perform functions based on returned results or error.
  1249.                   a)  If the local naming context has been found, activate the Local Name
  1250.                       Resolution  procedure.  This  procedure  may  return  an   Internal
  1251.                       Reference Found, a Remote Reference, an  Alias  Dereference,  or  a
  1252.                       NameError.  Each  of  these  causes  the  Name  Resolution  to   be
  1253.                       terminated with the outcome reported, except that if an  alias  has
  1254.                       been dereferenced, the procedure is restarted at step 1).
  1255.                   b)  Any other outcome is passed back to the Operation Dispatcher.
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.          PAGE18  Fascicle VIII.8 - Rec. X.518
  1278.  
  1279.